package com.reflect;

import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.lang.reflect.Field;



public class MybatisUtil {
    /**
     * 通用框架工具类：实现将任意对象的信息存放到数据
     * 获取每个类的class对象：使用反射去获取所有的成员变量，然后在通过打印流输出到文件
     */
    //定义字符打印流管道

    public static void save(Object e){
        try (
                PrintWriter print=new PrintWriter(new FileOutputStream("app/src/output.txt",true));
                ){
            //获取每个类的class对象
            Class c=e.getClass();
            //获取类的名称     c.getSimpleName()是获取当前类名，     c.getName()是获取全限名
            String simpleName = c.getSimpleName();
            print.println("==============="+simpleName+"================");
            //获取对象所有的成员变量
            Field[] fields = c.getDeclaredFields();
            //遍历所有的成员变量，得到变量名和变量值,将所有变量的值都转为String类型，写入文件
            for (Field field : fields) {
                //因为成员变量都是私有的，所以要暴力反射
                field.setAccessible(true);
                //获取成员变量名
                String name = field.getName();
                //获取成员变量值
                String value = field.get(e)+"";
                print.println(name+"="+value);

            }
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }
}
